Computer-generated, three-dimensional images are now commonly seen in movies, television shows, video games, and various other video applications. Different shading techniques, of varying complexity, are frequently used to add realism to the generated images and to make details more visible. An example of a simple shading technique might be to calculate the effects caused by a single point source of light on an image without taking into consideration factors such as reflection and diffusion. A more complicated shading technique might be full global illumination which takes into consideration all direct and indirect light sources as well as the reflection and diffusion caused by those sources. Ambient Occlusion (AO) is a shading technique that approximates full global illumination by taking into account the attenuation of light due to occlusion in order to improve local reflection models. Unlike other local shading methods, AO determines the illumination at each point as a function of other geometry in the scene.
More complicated shading techniques typically require more calculations, and thus take longer to perform and require more processing resources because the amount of data used to determine the shading is far greater. Performing these calculations tends to not be a limiting factor for movies or television because those images do not need to be generated in real time. In applications such as video games, however, images need to be generated in real time. Therefore, the amount of time allowed and processor resources available for generating images are limited by hardware capabilities.
Accordingly, there exists in the art a need to perform shading techniques such as ambient occlusion as rapidly as possible so that they can be incorporated into systems generating real-time images.